package com.yixing.tech.common.entity;//package com.yixing.tect.common.entity;
//
//import com.fasterxml.jackson.databind.ObjectMapper;
//import org.apache.axiom.om.OMElement;
//import org.apache.axiom.om.OMFactory;
//import org.apache.axiom.om.OMNamespace;
//
//import java.lang.reflect.Field;
//import java.util.LinkedList;
//import java.util.List;
//import java.util.Map;
//import java.util.Optional;
//
//public interface WebServiceEntity {
//
//    default List<OMElement> genOMElements(OMFactory fac, OMNamespace omNs) {
//        List<OMElement> list = new LinkedList<>();
//        ObjectMapper objectMapper = new ObjectMapper();
//        Map<String, Object> map = objectMapper.convertValue(this, Map.class);
//        System.out.printf("genOMElements Map: %s\n", map);
//        map.forEach((k, v) -> {
//            if(v != null) {
//                // 只处理 List 下面包 Map 的情况
//                if(v instanceof List && ((List)v).get(0) instanceof Map) {
//                    OMElement element = fac.createOMElement(k, omNs);
//                    ((List)v).forEach(xx -> {
//                        OMElement child = fac.createOMElement(k, omNs);
//                        child.setText(xx.toString());
//                        element.addChild(child);
//                    });
//                } else {
//                    OMElement element = fac.createOMElement(k, omNs);
//                    element.setText(v.toString());
//                    list.add(element);
//                }
//            }
//        });
//        return list;
//    }
//
//    default List<OMElement> genOMElementsBak(OMFactory fac, OMNamespace omNs) {
//        List<OMElement> list = new LinkedList<>();
//        for (Field declaredField : WebServiceEntity.class.getDeclaredFields()) {
//            declaredField.setAccessible(true);
//            try {
//                Object o = declaredField.get(this);
//                Optional.ofNullable(o).map(Object::toString).ifPresent(x -> {
//                    OMElement element = fac.createOMElement(declaredField.getName(), omNs);
//                    element.setText(x);
//                    list.add(element);
//                });
//            } catch (IllegalAccessException ignore) {
//                // do nothing
//            }
//
//        }
//        return list;
//    }
//
//}
